package middleware

import (
	"mcode/pkg/logger"
	"mcode/pkg/response"

	"github.com/gin-gonic/gin"
)

// NotFound 返回一个 404 处理中间件
// 注意：在Gin中，这个中间件通常不会被调用，因为Gin有内置的404处理
// 这里保留是为了兼容性
func NotFound() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 记录 404 日志
		logger.Warn("Route not found",
			logger.String("request_id", c.GetHeader("X-Request-ID")),
			logger.String("path", c.Request.URL.Path),
			logger.String("method", c.Request.Method),
			logger.String("ip", c.ClientIP()),
			logger.String("user_agent", c.GetHeader("User-Agent")),
		)

		// 构建错误消息
		message := "Route " + c.Request.Method + " " + c.Request.URL.Path + " not found"

		// 返回 404 响应
		response.NotFound(c, message)

		// 终止请求
		c.Abort()
	}
}
